package com.eportal.service;

import com.alibaba.fastjson.JSONObject;
import com.eportal.domain.Sysopt;
import com.eportal.entity.TUsersApplyEntity;
import com.eportal.params.background.TUsers.AuditParam;
import com.eportal.params.background.TUsers.AuthorizeKeysParam;
import com.eportal.vo.controller.background.tusers.ApproveDetailVO;
import com.eportal.vo.controller.background.tusers.TUserApplyVO;
import com.framework.jqgrid.PageEntity;
import com.github.pagehelper.PageInfo;

import java.util.Date;

/**
 * 钥匙管理
 * Created by Saber on 2017/8/9.
 */
public interface TUserApplyService extends BaseService<TUsersApplyEntity>{

    /**
     * 申请钥匙审核列表
     * @author Saber
     * @Date 2017/8/9 下午2:38
     * @param pageEntity        分页对象
     * @param communityId       社区id
     * @param agtCode           合作方id
     * @param user              当前用户
     * @param userRole          当前用户userRole
     * @return
     */
    PageInfo<TUserApplyVO> queryForPage(PageEntity pageEntity,String communityId,String agtCode,Sysopt user,int userRole);


    /**
     * 获取住户基本信息
     * @author Saber
     * @Date 2017/8/10 下午1:53
     * @param sId   sId
     * @see TUsersService#getApplyDetail(String)
     * @return
     */
    ApproveDetailVO getApplyDetail(Long sId);

    /**
     * 住户审核
     * @author Saber
     * @Date 2017/8/10 下午4:12
     * @param param         参数
     * @param user          当前用户
     * @param userRole      当前用户userRole
     * @see TUsersService#auditMethod(String, String, String, String, String, String, String, String, String)
     * @return
     */
    JSONObject audit(AuditParam param, Sysopt user, int userRole);

    /**
     * 预发钥匙
     * @author Saber
     * @Date 2017/8/15 下午2:06
     * @param param         参数
     * @param user          当前用户
     * @param userRole      当前用户userRole
     * @see  TUsersService#authorizeKeysMethod(String, String, String, Date, String, String, String, Date)
     * @return
     */
    JSONObject authorizeKeys(AuthorizeKeysParam param, Sysopt user, int userRole);

    /**
     * 获取用户id （随机参数userId,并和数据库进行比对,直到产生一个在数据库不存在的为止）
     * @author Saber
     * @Date 2017/8/15 下午6:00
     * @see TUsersService#getUserID()
     * @return
     */
    String getUserID();
}
